let loc = Loc.ghost
in
  Ast.StExp (loc,
    (Ast.ExLet (loc, Ast.ReNil,
       (Ast.BiEq (loc, (Ast.PaId (loc, (Ast.IdLid (loc, "loc")))),
          (Ast.ExId (loc,
             (Ast.IdAcc (loc, (Ast.IdUid (loc, "Loc")),
                (Ast.IdLid (loc, "ghost")))))))),
       (Ast.ExApp (loc,
          (Ast.ExApp (loc,
             (Ast.ExId (loc,
                (Ast.IdAcc (loc, (Ast.IdUid (loc, "Ast")),
                   (Ast.IdUid (loc, "StTyp")))))),
             (Ast.ExId (loc, (Ast.IdLid (loc, "loc")))))),
          (Ast.ExApp (loc,
             (Ast.ExApp (loc,
                (Ast.ExApp (loc,
                   (Ast.ExApp (loc,
                      (Ast.ExApp (loc,
                         (Ast.ExId (loc,
                            (Ast.IdAcc (loc, (Ast.IdUid (loc, "Ast")),
                               (Ast.IdUid (loc, "TyDcl")))))),
                         (Ast.ExId (loc, (Ast.IdLid (loc, "loc")))))),
                      (Ast.ExStr (loc, "t")))),
                   (Ast.ExId (loc, (Ast.IdUid (loc, "[]")))))),
                (Ast.ExApp (loc,
                   (Ast.ExApp (loc,
                      (Ast.ExId (loc,
                         (Ast.IdAcc (loc, (Ast.IdUid (loc, "Ast")),
                            (Ast.IdUid (loc, "TySum")))))),
                      (Ast.ExId (loc, (Ast.IdLid (loc, "loc")))))),
                   (Ast.ExApp (loc,
                      (Ast.ExApp (loc,
                         (Ast.ExApp (loc,
                            (Ast.ExId (loc,
                               (Ast.IdAcc (loc, (Ast.IdUid (loc, "Ast")),
                                  (Ast.IdUid (loc, "TyOr")))))),
                            (Ast.ExId (loc, (Ast.IdLid (loc, "loc")))))),
                         (Ast.ExApp (loc,
                            (Ast.ExApp (loc,
                               (Ast.ExId (loc,
                                  (Ast.IdAcc (loc, (Ast.IdUid (loc, "Ast")),
                                     (Ast.IdUid (loc, "TyId")))))),
                               (Ast.ExId (loc, (Ast.IdLid (loc, "loc")))))),
                            (Ast.ExApp (loc,
                               (Ast.ExApp (loc,
                                  (Ast.ExId (loc,
                                     (Ast.IdAcc (loc,
                                        (Ast.IdUid (loc, "Ast")),
                                        (Ast.IdUid (loc, "IdUid")))))),
                                  (Ast.ExId (loc, (Ast.IdLid (loc, "loc")))))),
                               (Ast.ExStr (loc, "A")))))))),
                      (Ast.ExApp (loc,
                         (Ast.ExApp (loc,
                            (Ast.ExId (loc,
                               (Ast.IdAcc (loc, (Ast.IdUid (loc, "Ast")),
                                  (Ast.IdUid (loc, "TyId")))))),
                            (Ast.ExId (loc, (Ast.IdLid (loc, "loc")))))),
                         (Ast.ExApp (loc,
                            (Ast.ExApp (loc,
                               (Ast.ExId (loc,
                                  (Ast.IdAcc (loc, (Ast.IdUid (loc, "Ast")),
                                     (Ast.IdUid (loc, "IdUid")))))),
                               (Ast.ExId (loc, (Ast.IdLid (loc, "loc")))))),
                            (Ast.ExStr (loc, "B")))))))))))),
             (Ast.ExId (loc, (Ast.IdUid (loc, "[]")))))))))))


